/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Messenj;

import Utils.InfoLogin;
import java.awt.Graphics2D;
import java.awt.SplashScreen;
import java.io.IOException;
import java.util.Hashtable;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnUserStatus;
import net.sf.jml.impl.MsnMessengerFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author edoardo
 */
public class MessenjManager {

    MsnMessenger messenger;
    MessenjListener MjListener;
    Messenj messenj;

    /*
     * in questa hashtable verranno memorizzate tutte le finestre
     * di chat, quando viene ricevuto un messaggio, esso viene
     * indirizzato alla giusta finestra tramite questa hashtable
     * */
    public Hashtable finestreChat;
    Log l = LogFactory.getLog(this.getClass());
    Logger ll = Logger.getLogger("messenj");

    public MessenjManager(InfoLogin il) {

        boolean canLogin = true;
        try {
            messenger = MsnMessengerFactory.createMsnMessenger(il.getEmail(), il.getPass());
        } catch (Exception e) {
            canLogin = false;
            l.info(e);
            JOptionPane.showMessageDialog(null, "Probabilmente hai inserito male l'username, controlla ;).", "Messenj - Attenzione", JOptionPane.WARNING_MESSAGE);
        }
        if (canLogin) {
            messenger.getOwner().setInitStatus(il.getStatus());
            //inizializzo gli oggetti
            this.initObject();
            // aggiungo il listener al messenger
            messenger.addListener(MjListener);
            // eseguo il login
            messenger.login();
            // esegio il logout
            //messenger.logout();
        }
    }

    public void start() {
        messenj = new Messenj(this);
        messenj.setVisible(true);
    }

    public void startSwicthboard(Object o) {
        this.messenger.newSwitchboard(o);
        this.l.info("metodo invocato");
    }

    private void initObject() {
        this.finestreChat = new Hashtable();
        MjListener = new MessenjListener(this);
        try {
            ll.addHandler(new FileHandler("/home/edoardo/logger.txt"));
            ll.info("logger creato");
        } catch (IOException ex) {
            Logger.getLogger(MessenjManager.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(MessenjManager.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
